package cn.edu.zafu.bigdata.bd121.grade;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用HashMap实现学生成绩管理
 * 描述：编写一个简单的学生成绩管理系统，使用HashMap存储每个学生的成绩。
 * 要求：
 * 1.创建一个StudentGradeManager类，其中包含一个HashMap<String, Integer>来存储学生姓名与其对应的成绩。
 * 2.提供以下方法：
 * 1）void addStudent(String name, int grade)：添加学生成绩。
 * 2）int getGrade(String name)：根据学生姓名获取成绩，若学生不存在则返回-1。
 * 3）void removeStudent(String name)：删除学生成绩。
 * 3.编写测试类，添加几个学生成绩并进行查询和删除操作。
 *
 * @author 202211090121
 */
public class StudentGradeManager {

    /**
     * 实例
     */
    private static volatile StudentGradeManager instance;

    /**
     * 存储学生成绩的HashMap
     */
    private final Map<String, Integer> gradesMap;

    private StudentGradeManager() {
        // 线程安全的HashMap
        gradesMap = Collections.synchronizedMap(new HashMap<>());
    }

    /**
     * 双检锁实现单例模式
     */
    public static StudentGradeManager getInstance() {
        if (instance == null) {
            synchronized (StudentGradeManager.class) {
                if (instance == null) {
                    instance = new StudentGradeManager();
                }
            }
        }
        return instance;
    }

    public void addStudent(String name, int grade) {
        gradesMap.put(name, grade);
    }

    public int getGrade(String name) {
        return gradesMap.getOrDefault(name, -1);
    }

    public void removeStudent(String name) {
        gradesMap.remove(name);
    }
}
